const app = getApp();
const getToken = function(){
  wx.request({
    url: app.globalData.url+'/wxtoken', //自己的服务接口地址
    method: 'post',
    // 需要传给后端的数据
    data: {
      userInfo: wx.getStorageSync('userinfo')
    },
    success: (res) => {
      // 将后端返回的token存储到本地
      wx.setStorageSync('token', res.data.data.token)
    },
    fail: function () {
      console.log('系统错误')
    }
  })
}
/**
 * 统一封装的请求
 * @author smoyu
 * @param option为参数对象，至少包含url、method
 */
const Request = function request(option) {
  let that = this;
  return new Promise(function (resolve, reject) {
    let header = {
      "token":  wx.getStorageSync('token') //携带token在请求头中
    };
    wx.showToast({
      title: '加载中',
      icon: 'loading',
      duration: 10000
    })
    wx.request({
      url: app.globalData.url + option.url,
      method: option.method,
      data: option.data === undefined ? '' : JSON.stringify(option.data), // 如果data没有传入，就给空串，不然就序列化
      header: header,//请求头
 	    timeout:5000,//超时时间 5s
      success(res) {
        wx.hideToast();
        //请求成功,此处根据你的业务返回的状态码进行修改
        if (res.data.code === 0) {
          resolve(res.data);
        } else if (res.data.code === 1) {
           reject(res.data.msg);
        } else if (res.data.code === 500) {
          if(res.data.msg == 'tokenExpired'){
            getToken();
          }else{
            reject(res.data.msg);
          }
        } else {
          //其他异常
          reject('运行时错误,请稍后再试');
        }
      },
      fail(err) {
        wx.hideToast();
        //请求失败
        reject(err)
      }
    })
  })
}



//导出
module.exports = Request
